跳到主要内容

数组 array

说明

说明
  • 数组是指一系列同一类型数据的集合
  • 数组中包含的每个数据被称为数组元素(element),这种类型可以是任意的原始类型,例如 intstring
  • 一个数组包含的元素个数被称为数组的长度
  • 数组是一个长度固定的数据类型,数组的长度是类型的一部分,[5]int[10]int 是不同的类型

定义方式

说明
  • 数组的长度必须是常量,并且长度是数组的类型的一部分
  • 数组一旦定义,长度不可变,元素可变
var 数组名称 [元素数量]类型
  • 方式1 指定长度和类型

    var arr [5]int // 长度为5的int数组,初始值为[0, 0, 0, 0, 0]
  • 方式2 指定长度和类型同时初始化

    arr := [5]int{1, 2, 3, 4, 5} // 长度为5,初始值为[1, 2, 3, 4, 5]
  • 方式3 使用 ... 让编译器自动推断长度

    arr := [...]int{1, 2, 3} // 自动推断长度为3

代码示例

package main

import "fmt"

func main() {

// 定义一个长度为5,类型为int的空数组
var a [5]int

// 定义一个长度为3,类型为int的数组并赋值
var b [3]int
b[0] = 80
b[1] = 90
b[2] = 100

// 定义一个长度为3,类型为int的数组并赋值
c := [3]int{1, 2, 3}

fmt.Println("a:", a)
fmt.Println("b:", b)
fmt.Println("c:", c)
}

输出

a: [0 0 0 0 0]
b: [80 90 100]
c: [1 2 3]

使用示例

普通遍历数组

package main

import "fmt"

func main() {

var a = [5]string{"北京", "上海", "广州", "深圳", "杭州"}
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
}

输出

北京
上海
广州
深圳
杭州

k,v 遍历数组

package main

import "fmt"

func main() {
var a = [5]string{"北京", "上海", "广州", "深圳", "杭州"}
for index, value := range a {
fmt.Println(index, value)
}
}

输出

0 北京
1 上海
2 广州
3 深圳
4 杭州

数组与切片的区别

特性数组切片
长度是否固定固定可变
定义时是否需要长度必须指定长度(或用 ... 推断)不需要,直接用 [] 定义
是否值类型是(传递时会拷贝整个数组)否(传递的是引用)
初始化方式[n]type{...}[]type{...}
使用 make 创建不支持支持
底层结构直接存储元素基于数组,提供灵活操作
Right Bottom Gif
Right Top GIF